package com.rabbit.eap.system.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.rabbit.eap.framework.common.vo.BaseVO;
import com.rabbit.eap.system.entity.SysDept;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;
import java.util.List;


/**
 * @projectName eap
 * @packageName com.rabbit.eap.system.vo
 * @className SysUserVO
 * @author： rabbit
 * @version： 1.0
 * @since： 2020/06/06 23:34:03
 * <p>Description:
 * 用户信息表 查询结果对象
 * </p>

 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel(value = "SysUserVO对象")
public class SysUserVO extends BaseVO {
    private static final long serialVersionUID = 1L;
    /**
     * 用户ID
     */
    @ApiModelProperty("用户ID")
    private Long id;
    /**
     * 登录账号
     */
    @ApiModelProperty("登录账号")
    private String userName;

    /**
     * 工号
     */
    @ApiModelProperty("工号")
    private String userNumber;
    /**
     * 用户昵称
     */
    @ApiModelProperty("用户昵称")
    private String nickName;
    /**
     * 用户类型（00系统用户 01注册用户）
     */
    @ApiModelProperty("用户类型（00系统用户 01注册用户）")
    private String userType;
    /**
     * 用户邮箱
     */
    @ApiModelProperty("用户邮箱")
    private String email;
    /**
     * 座机
     */
    @ApiModelProperty("座机")
    private String phone;
    /**
     * 手机
     */
    @ApiModelProperty("手机")
    private String mobile;
    /**
     * 用户性别（0男 1女 2未知）
     */
    @ApiModelProperty("用户性别（0男 1女 2未知）")
    private String gender;
    /**
     * 头像路径
     */
    @ApiModelProperty("头像路径")
    private String avatar;
    /**
     * 所属部门
     */
    @ApiModelProperty("所属部门")
    private Long deptId;
    /**
     * 所属部门名称
     */
    @ApiModelProperty("所属部门名称")
    private String deptName;
    /**
     * 帐号状态（0正常 1停用）
     */
    @ApiModelProperty("帐号状态（0正常 1停用）")
    private String status;
    /**
     * 最后登陆IP
     */
    @ApiModelProperty("最后登陆IP")
    private String loginIp;
    /**
     * 最后登陆时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @ApiModelProperty("最后登陆时间")
    private LocalDateTime loginDate;
    /**
     * 部门对象
     */
    private SysDept dept;

    /**
     * 角色对象
     */
    private List<SysRoleVO> roles;

    /**
     * 角色组
     */
    private List<Long> roleIds;

    /**
     * 岗位对相关
     */
    private List<SysPostVO> posts;

    /**
     * 岗位组
     */
    private List<Long> postIds;

}